package com.solution.admin.point.service.impl;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.solution.admin.point.dao.PointDao;
import com.solution.admin.point.dao.PointLogDao;
import com.solution.admin.point.entity.PointLogEntity;
import com.solution.admin.point.service.PointLogService;
import com.solution.common.dao.BaseDao;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;
import com.solution.common.service.impl.BaseServiceImpl;

/**
 * 积分日志信息service实现层
 * 
 * @author xu_cc
 * @date 2017-10-20 14:18:04
 */
@Service
public class PointLogServiceImpl extends BaseServiceImpl<PointLogEntity> implements PointLogService {

    /**
     * 积分日志信息接口
     */
    @Autowired
    private PointLogDao pointLogDao;

    @Autowired
    PointDao pointDao;

    protected BaseDao<PointLogEntity> getDao() {
        return this.pointLogDao;
    }

    /**
     * 保存积分日志信息
     * 
     * @param pointLogEntity
     *            积分日志信息实体
     * @return Long 添加成功积分日志信息的ID
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    public long savePointLog(PointLogEntity pointLogEntity) {
        return pointLogDao.savePointLog(pointLogEntity);
    }

    /**
     * 分页查询积分日志信息
     * 
     * @param pageParam
     *            分页参数
     * @param paramMap
     *            查询参数
     * @return PageBean 分页参数和分页数据
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    @Override
    public PageBean listPointLogPage(PageParam pageParam, Map<String, Object> paramMap) {
        return pointLogDao.listPointLogPage(pageParam, paramMap);
    }

    /**
     * 根据ID查询用户信息
     * 
     * @param id
     *            用户id
     * @return pointLogEntity 用户对象
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    public PointLogEntity getPointLogById(Long id) {
        return pointLogDao.getById(id.longValue());
    }

    /**
     * 更新用户
     * 
     * @param pointLogEntity
     *            用户实体
     * @return Long 更新是否成功，>1代表更新成功
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    @Override
    public int updatePointLog(PointLogEntity pointLogEntity) {
        return pointLogDao.updatePointLog(pointLogEntity);
    }

    /**
     * 根据条件查询积分日志信息
     * 
     * @param param
     * @return 数据列表
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    @Override
    public List<PointLogEntity> listPointLog(Map<String, Object> param) {
        return pointLogDao.listPointLog(param);
    }

    /**
     * 删除积分日志信息
     * 
     * @param
     * @return int 返回删除记录条数
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    public int deletePointLogById(long id) {
        return pointLogDao.deleteById(id);
    }

    /**
     * 计算客户在指定时间段内，累计增加积分数（用于积分清零规则-保留3个月所得积分）<br>
     * key:[startTime,endTime,customerId]<br>
     * 其中，时间格式：yyyy-MM-dd HH:mm:ss
     * 
     * @param param
     * @return BigDecimal
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年10月26日 下午5:19:58
     */
    public BigDecimal getTotalByCustomerIdInTime(Map<String, Object> param) {
        return pointLogDao.getTotalByCustomerIdInTime(param);
    }

    /**
	 * 获取用户消费积分总和
	 * 
	 * @param customerId
	 * @return BigDecimal
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2018年5月16日 下午6:13:27
	 */
	public BigDecimal getCustomerTotalPoint(Map<String, Object> param) {
		return pointLogDao.getCustomerTotalPoint(param);
	}
}